Embodiments of the present invention relate to parallel programming, and in particular, to parallel programming of an in memory database with extensible skeletons.
Unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
Parallelism is a factor in implementing the operational requirements for processing large data sets. However, parallelism remains difficult to cope with from an application perspective, as it is hard to control and to debug.
The traditional landscape of parallel relational database systems offers an integrated and transparent exploitation of parallelism to execute SQL queries efficiently on different parallel system architectures. Systems provide support for parallelism on chip/board level via multi-threaded execution models, as well as physical operator implementations with the goal to bridge the gap between different nodes within a cluster scenario.
In memory databases may also follow that main path, but provide additional constructs to compile complex custom code into generic operators of an execution model. Since such systems do not have any knowledge about a potential degree of parallelism, either the system is forced to execute custom code snippets fully sequentially or the model developer has to describe the possible parallelization of the custom code. Therefore, the application programmer has to explicitly think and program in parallel data structures and has to explicitly define synchronization points. This behavior might result in situations where the degree of parallelism defined by the programmer does not match an optimal degree of parallelism during runtime. Additionally, since programming in a parallel way requires training and expertise, some of the models might simply not fully leverage possible parallelism and substantially miss performance opportunities.
Accordingly, the present disclosure addresses these and other issues with techniques for parallel programming of an in memory database utilizing extensible sets of algorithmic skeletons.